
/**
 * 加密值
 * @param values 需要加密的值
 * @returns {string}
 */
export function btoa(value: string | LooseObject) {
  if (window?.btoa && window?.encodeURIComponent) {
    try {
      value = window.btoa(window.encodeURIComponent(`${value}`))
      return value
    } catch {
      return null
    }
  }
  return `${value}`
}

/**
 * 解密值
 * @param values 需要解密的值
 * @returns {string}
 */
export function atob(value: string | LooseObject) {
  if (window?.atob && window?.decodeURIComponent) {
    try {
      value = window.decodeURIComponent(window.atob(`${value}`))
      return value
    } catch {
      return null
    }
  }
  return `${value}`
}

/**
 * 加密url参数
 * @param values 需要加密的url参数
 * @returns {Array<string> | string}
 */
export function btoas(values: LooseObject) {
  if (values instanceof Array) {
    return values.map(btoa)
  }
  return btoa(values)
}

/**
 * 解密url参数
 * @param values 需要解密的url参数
 * @returns {Array<string> | string}
 */
export function atobs(values: LooseObject) {
  if (values instanceof Array) {
    return values.map(atob)
  }
  return atob(values)
}


/**
 * 新建a标签
 * @export
 */
export function createALink(url: string, id?: string, target?: string) {
  const a = document.createElement('a')
  a.setAttribute('href', url)
  a.setAttribute('target', target || '_blank')
  a.setAttribute('id', id)
  // 防止反复添加
  if (!document.getElementById(id)) {
    document.body.appendChild(a)
  }
  a.click()
}
